package com.wjm.api.ThreadPackage;

/**
 * Data:2022年07月26日
 * Author:wjm
 * Content: Thread相关API
 *
 *
 *  相关API：
 *        public long getId()    返回该线程的标识符
 *        public String getName()    返回该线程名称
 *        public int getPriority()    返回线程优先级（优先级越大，获取时间片机率越大）
 *        public void setPriority(int a)    设置线程优先级（默认优先级为5，范围是1~10）
 *        public Thread.state getState()    获取线程的状态
 *        public boolean isAlive()    测试线程释放处于活动状态
 *        public boolean isDaemon()    测试线程释放为守护线程
 *        public void setDaemon(boolean b)    当b为true时将前台线程设置为后台线程
 *        public boolean isInterrupted()    测试线程是否已经中断
 *
 *
 *  前台线程：
 *       指接受后台线程服务的线程
 *  后台线程：
 *       为其他线程提供服务发线程，也叫守护线程
 *  注意:
 *       1)main方法是前台线程，前台线程是程序中必须执行完成的线程，而后台线程则是java中所有前台线程结束之后，再结束
 *       2)通过Thread创建的所有线程都默认是前台线程
 *       3)可以通过API将前台线程设置为后台线程，设置线程的操作要再线程启动之前完成
 *
 */
public class ThreadDemo2 {
    public static void main(String[] args) {
        //当前的main方法的运行一定是线程在执行，所以直接获取当前线程即可
        Thread thread = Thread.currentThread();
        //获取线程名称
        String name = thread.getName();
        //获取当前线程的ID
        long id = thread.getId();
        //判断当前线程是否是活着的
        boolean isLife = thread.isAlive();
        //判断当前线程是否为后台线程（守护线程）
        boolean isDaemon = thread.isDaemon();
        //获取当前线程的状态
        Thread.State state = thread.getState();
        //判断线程是否中断
        boolean isInterrupted = thread.isInterrupted();
        //获取当前线程优先级
        int priority = thread.getPriority();
        //设置线程优先级
        thread.setPriority(8);


        System.out.println("优先级:"+priority);
        System.out.println("是否中断:"+isInterrupted);
        System.out.println("当前线程的状态:"+state);
        System.out.println("是否为后台线程:"+isDaemon);
        System.out.println("是否是活着的:"+isLife);
        System.out.println("ID:"+id);
        System.out.println("线程名称:"+name);





    }
}
